Goto

Collaborating Authors

 scaling machine learning


Three Approaches to Scaling Machine Learning with Uber Seattle Engineering

#artificialintelligence

Uber's services require real-world coordination between a wide range of customers, including driver-partners, riders, restaurants, and eaters. Accurately forecasting things like rider demand and ETAs enables this coordination, which makes our services work as seamlessly as possible. In an effort to constantly optimize our operations, serve our customers, and train our systems to perform better and better, we leverage machine learning (ML). In addition, we make many of our ML tools open source, sharing them with the community to advance the state of the art. In this spirit, members of our Seattle Engineering team shared their work at an April 2019 meetup on ML and AI at Uber.


Scaling Machine Learning from 0 to millions of users -- part 2

#artificialintelligence

In part 1, we broke out of the laptop, and decided to deploy our prediction service on a virtual machine. By doing so, we discussed a few simple techniques that helped with initial scalabilityโ€ฆ and hopefully with reducing manual ops. Since then, despite a few production hiccups due the lack of high availability, life has been pretty good. However, traffic soon starts to increase, data piles up, more models need to be trained, etc. Technical and business stakes are getting higher, and let's face it, the current architecture will go underwater soon. Yes, it can be a short-term solution to use a large server for training and prediction.


Scaling Machine Learning from 0 to millions of users, part 1

#artificialintelligence

I suppose most Machine Learning (ML) models are conceived on a whiteboard or a napkin, and born on a laptop. As the fledgling creatures start babbling their first predictions, we're filled with pride and high hopes for their future abilities. Alas, we know deep down in our heart that that not all of them will be successful, far from it. A small number fail us quickly as we build them. Others look promising, and demonstrate some level of predictive power.


Scaling Machine Learning at Uber with Michelangelo

#artificialintelligence

Models are trained and initially evaluated against historical data. This means that users can know that a model would have worked well in the past. But once you deploy the model and use it to make predictions on new data, it's often hard to ensure that it's still working correctly. Models can degrade over time because the world is always changing. Moreover, there can be breakages or bugs in a production model's data sources or data pipelines.


Scaling Machine Learning to Recommend Driving Routes

#artificialintelligence

We built an app to predict potential earnings of a driver given his current location for next 8 hours in successive time intervals. The App also provided recommendations of next best pickup locations ranked based on driver preferences and behavior. Potential earning per recommended locations is predicted for several time interval such as next 15 minutes, 30 minutes, one hour, two hours and four hours. These options further helped in learning driver behaviour which is feedback to create more relevant recommendations. Our main aim was to maximize the revenue of the taxi services company by maximizing earnings per driver.


Scaling Machine Learning - Part 1: Naive approach

#artificialintelligence

Yet another level is distributed computing. It means multiple machines cooperating as single system to reach common goal. Distributed computing is not always the solution, it is actually often misused for problems that could be solved more efficiently on a single machine. It also introduces many new complexities that may not be necessary, including having to worry about concurrency, time, order, message delivery, network latency, consistency, failures or deployment. Companies including Baidu or Google reportedly use optimized single machine implementations or high performance computing utilising GPUs on single machine or supercomputers for machine learning and other expensive algorithms, but TensorFlow or Spark are prime examples of distributed systems used for this puprose.